package sprint2;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.Serializable;
import java.util.ArrayList;

/**
 * 
 * @author Vincent van Andel
 * @author Fabian Mengerink
 * 
 */
public class Location implements Serializable {
	private String naam;
	private String filename;
	private int nr;
	private int con1;
	private int con2;
	private int con3;
	private int con4;
	private int con5;
	private int object;
	private int monster;

	/**
	 * De constructor van Locatie. Kan zowel een kamer (Chamber) als een
	 * teleporter zijn.
	 * 
	 * @param naam
	 *            de naam van de kamer (wordt gebruikt in de toString van de
	 *            methode)
	 * @param filename
	 *            de naam van de file waar de grafische weergave van de kamer
	 *            instaat
	 * @param nr
	 *            de [b]unieke nummer[/b] van de kamer. Wordt in een aantal
	 *            methodes gebruikt, dus let goed op!!
	 * @param con1
	 *            de kamer waaraan de desbetreffende kamer is verbonden. Als de
	 *            kamer maar twee aansluitende kamers heeft, de rest op 0
	 *            zetten. Zie bijgeleverde Word-document.
	 * @param con2
	 *            de kamer waaraan de desbetreffende kamer is verbonden. Als de
	 *            kamer maar twee aansluitende kamers heeft, de rest op 0
	 *            zetten. Zie bijgeleverde Word-document.
	 * @param con3
	 *            de kamer waaraan de desbetreffende kamer is verbonden. Als de
	 *            kamer maar twee aansluitende kamers heeft, de rest op 0
	 *            zetten. Zie bijgeleverde Word-document.
	 * @param con4
	 *            de kamer waaraan de desbetreffende kamer is verbonden. Als de
	 *            kamer maar twee aansluitende kamers heeft, de rest op 0
	 *            zetten. Zie bijgeleverde Word-document.
	 * @param con5
	 *            de kamers waaraan de desbetreffende kamer is verbonden. Als de
	 *            kamer maar twee aansluitende kamers heeft, de rest op 0
	 *            zetten. Zie bijgeleverde Word-document.
	 * @param object
	 *            als het nummer van deze int op 0 staat is er geen object in de
	 *            kamer; als het getal niet 0 is, dan is het cijfer de index van
	 *            de arraylist.
	 * @param monster
	 *            als het nummer van deze int op 0 staat is er geen monster in
	 *            de kamer, als de int op 1-3 staat is er een random kans dat er
	 *            een monster in de kamer is. Op een 4 of hoger is er een
	 *            specifieke alien aanwezig.
	 */
	public Location(String naam, String filename, int nr, int con1, int con2,
			int con3, int con4, int con5, int object, int monster) {
		this.naam = naam;
		this.filename = filename;
		this.nr = nr;
		this.con1 = con1;
		this.con2 = con2;
		this.con3 = con3;
		this.con4 = con4;
		this.con5 = con5;
		this.object = object;
		this.monster = monster;
	}

	public String getFileName() {
		return filename;
	}

	public int getCon1() {
		return this.con1;
	}

	public int getCon2() {
		return this.con2;
	}

	public int getCon3() {
		return this.con3;
	}

	public int getCon4() {
		return this.con4;
	}

	public int getCon5() {
		return this.con5;
	}

	public String getNaam() {
		return this.naam;
	}

	public int getNr() {
		return this.nr;
	}

	// printfunctie, drukt de file die bij de filename hoort af. Als het bestand
	// niet bestaat sluit het spel af
	static void printOut(String filename) {
		BufferedReader in = null;
		try {
			File file = new File(filename);
			in = new BufferedReader(new FileReader(file));
		} catch (FileNotFoundException e) {
			System.out.println("The file doesn't exist.");
			System.exit(0);
		} catch (IOException e) {
			System.out.println("I/O Error");
			System.exit(0);
		}
		try {
			while (in.ready()) {
				System.out.println(in.readLine());
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	public void setObject(int object) {
		this.object = object;
	}

	public int getObject() {
		return object;
	}

	public void setMonster(int monster) {
		this.monster = monster;
	}

	public int getMonster() {
		return monster;
	}
}
